/**********************************************************************************************/
/* FBL_Globals.h																			  */
/*                                                                       					  */
/* Copyright Paradigma, 1993-2006                                        					  */
/* All Rights Reserved.                                                 					  */
/**********************************************************************************************/

#ifndef _FBL_Globals_h
	#define _FBL_Globals_h
#pragma once

#include <VShared/FBL/publ/Headers/FBL.h>


/**********************************************************************************************/
FBL_Begin_Namespace


/**********************************************************************************************/
// forward declarations: 
//
SMART_INTERFACE( I_Location );
SMART_INTERFACE( I_StringFactory );


/**********************************************************************************************/
//									GLOBAL FUNCTIONS:
/**********************************************************************************************/

/**********************************************************************************************/
FBL_SHARED_EXP bool IsKernelDLLAvailable( bool inTryAgain = false );
FBL_SHARED_EXP bool IsClientDLLAvailable( bool inTryAgain = false );


/**********************************************************************************************/
//									Version constants:
/**********************************************************************************************/
FBL_SHARED_EXP extern const ulong gKernelVersionMajor;
FBL_SHARED_EXP extern const ulong gKernelVersionMinor;
FBL_SHARED_EXP extern const ulong gKernelVersionRevision;
FBL_SHARED_EXP extern const ulong gKernelVersionMinorAndRevision;

FBL_SHARED_EXP extern const ulong gKernelVersionStage; // See <MacTypes.h> for definitions of Stage
FBL_SHARED_EXP extern const ulong gKernelVersionInternalRelease;
FBL_SHARED_EXP extern const char* gKernelVersionString;

FBL_SHARED_EXP extern const ulong gKernelVersion;


//----------------------------------------------------------------------------------------------
FBL_SHARED_EXP extern const bool  gEraseInformation;


//----------------------------------------------------------------------------------------------
FBL_SHARED_EXP const char* GetKernelVersionString( void );


/**********************************************************************************************/
// Private copy constructor and copy assignment ensure classes derived from
// class noncopyable cannot be copied.
//
class FBL_SHARED_EXP_CLASS noncopyable
{
	protected:////////////////////////////////////////////////////////////////////////////////// 

					    	noncopyable(){}
virtual				    	~noncopyable(){}

	private:////////////////////////////////////////////////////////////////////////////////////
	 
						    noncopyable( const noncopyable& );
						    const noncopyable& operator=( const noncopyable& );
};


//----------------------------------------------------------------------------------------------
// Identificator's restrictions:
//----------------------------------------------------------------------------------------------
const tslen gNameLength = 128;	// Max length for names (tables, fields, and so on)


/**********************************************************************************************/
FBL_SHARED_EXP extern const ushort gFloatDefaultPrecision;
FBL_SHARED_EXP extern const ushort gFloatDefaultScale;
FBL_SHARED_EXP extern const ushort gDoubleDefaultPrecision;
FBL_SHARED_EXP extern const ushort gDoubleDefaultScale;


/**********************************************************************************************/
FBL_End_Namespace


/**********************************************************************************************/
#endif // _FBL_Globals_h


